<template>
  <div class="top-nav">
    <ul class="bar">
      <!-- 这里使用template可以不破坏原有的html结构，如果这里用div等，就会破坏结构，css样式也会受到影响 -->
      <template v-if="profile.token">
        <li>
          <router-link to="/member"
            ><i class="iconfont icon-user"></i>{{ profile.nickname }}</router-link
          >
        </li>
        <li><a href="javascript:;" @click="logOut()">退出登录</a></li>
      </template>
      <template v-else>
        <li><router-link to="/login">请先登录</router-link></li>
        <li><a href="javascript:;">免费注册</a></li>
      </template>

      <li><a href="javascript:;">我的订单</a></li>
      <li><a href="javascript:;">会员中心</a></li>
      <li><a href="javascript:;">帮助中心</a></li>
      <li><a href="javascript:;">关于我们</a></li>
      <li>
        <a href="javascript:;"><i class="iconfont icon-phone"></i>手机版</a>
      </li>
    </ul>
  </div>
</template>

<script>
import { computed } from "@vue/reactivity";
import { useStore } from "vuex";
import { useRouter } from "vue-router";
export default {
  name: "TopNav",
  setup() {
    const store = useStore();
    const router = useRouter();
    // const {profile} = store.state.user
    // 这里需要使用计算属性才能实现响应式，直接结构是不能响应式的
    const profile = computed(() => {
      return store.state.user.profile;
    });

    // 退出登录
    const logOut = () => {
      //用户信息置空
      store.commit("user/setUser", {});
      //购物车置空
      store.commit("cart/setCart", []);
      router.push("/login");
    };
    return {
      profile,
      logOut,
    };
  },
};
</script>

<style lang="less" scoped>
.top-nav {
  background: #333;

  .bar {
    height: 53px;
    line-height: 53px;
    display: flex;
    justify-content: flex-end;

    li a {
      padding: 0 15px;
      color: #cdcdcd;
      border-left: solid #666 1px;

      &:hover {
        color: @xtxColor;
      }

      i {
        font-size: 14px;
        margin-right: 2px;
      }
    }

    li:first-child a {
      border: none;
    }
  }
}
</style>
